#!/bin/bash

# OA安装脚本 - 自动检测系统版本并执行对应的安装脚本

# 颜色定义
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m' # No Color

# 打印彩色信息
info() {
    echo -e "${GREEN}[INFO]${NC} $1"
}

warn() {
    echo -e "${YELLOW}[WARN]${NC} $1"
}

error() {
    echo -e "${RED}[ERROR]${NC} $1"
}

# 检测系统类型
detect_os() {
    if [ -f /etc/redhat-release ]; then
        echo "centos"
    elif [ -f /etc/lsb-release ] && grep -q "Ubuntu" /etc/lsb-release; then
        echo "ubuntu"
    elif [ -f /etc/debian_version ]; then
        echo "debian"
    else
        echo "unknown"
    fi
}

# 检查 curl 是否安装
check_dependencies() {
    if ! command -v curl &> /dev/null; then
        error "未找到 curl，正在自动安装..."
        if [ "$OS_TYPE" = "centos" ]; then
            yum install curl -y -q
        elif [ "$OS_TYPE" = "ubuntu" ] || [ "$OS_TYPE" = "debian" ]; then
            apt-get update -qq > /dev/null 2>&1
            apt-get install curl -y -qq > /dev/null 2>&1
        fi
        
        if ! command -v curl &> /dev/null; then
            error "curl 安装失败，请手动安装后重试"
            exit 1
        fi
        info "curl 安装成功"
    fi
}

# 执行安装
execute_install() {
    local os_type=$1
    
    case $os_type in
        "centos")
            info "检测到 CentOS 系统，执行 CentOS 安装脚本..."
            bash -c "$(curl -fsSL https://gitee.com/banban1000/docker/raw/master/linux/linux-install-oa-centos.sh)"
            ;;
        "ubuntu")
            info "检测到 Ubuntu 系统，执行 Ubuntu 安装脚本..."
            bash -c "$(curl -fsSL https://gitee.com/banban1000/docker/raw/master/linux/linux-install-oa-ubuntuos.sh)"
            ;;
        "debian")
            info "检测到 Debian 系统，执行 Debian 安装脚本..."
            bash -c "$(curl -fsSL https://gitee.com/banban1000/docker/raw/master/linux/linux-install-oa-debianos.sh)"
            ;;
    esac
}

# 显示使用帮助
show_help() {
    echo "使用方法: $0 [选项]"
    echo "选项:"
    echo "  -y, --yes     静默安装，无需确认"
    echo "  -h, --help    显示此帮助信息"
    echo ""
    echo "示例:"
    echo "  $0           # 交互式安装（默认确认）"
    echo "  $0 -y        # 静默安装"
}

# 主函数
main() {
    local silent=false
    
    # 解析参数
    while [[ $# -gt 0 ]]; do
        case $1 in
            -y|--yes)
                silent=true
                shift
                ;;
            -h|--help)
                show_help
                exit 0
                ;;
            *)
                error "未知参数: $1"
                show_help
                exit 1
                ;;
        esac
    done

    info "开始检测系统类型..."
    
    OS_TYPE=$(detect_os)
    
    if [ "$OS_TYPE" = "unknown" ]; then
        error "不支持的系统类型！"
        error "当前支持的系统：CentOS, Ubuntu, Debian"
        exit 1
    fi

    # 显示系统信息
    info "系统信息："
    if [ -f /etc/os-release ]; then
        source /etc/os-release
        echo "    OS: $NAME"
        echo "    Version: $VERSION"
    fi
    echo "    Architecture: $(uname -m)"

    # 检查依赖
    check_dependencies

    # 确认安装（如果不是静默模式）
    if [ "$silent" != "true" ]; then
        echo
        # 修改这里：默认值为Y，用户只需按回车即可继续
        read -p "是否继续安装OA系统？(Y/n): " -n 1 -r
        echo
        # 如果用户输入为空（直接回车）或输入Y/y，则继续安装
        if [[ -z "$REPLY" || "$REPLY" =~ ^[Yy]$ ]]; then
            info "开始安装OA系统..."
        else
            info "安装已取消"
            exit 0
        fi
    else
        info "静默模式，开始安装..."
    fi

    # 执行安装
    execute_install "$OS_TYPE"
}

# 脚本入口
echo "=================================================="
info "OA 系统自动安装脚本"
info "支持系统: CentOS, Ubuntu, Debian"
echo "=================================================="

# 执行主函数
main "$@"